package com.haojin.spring.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;


/**
 * @author .29.
 * @create 2023-03-01 8:36
 */
@Configuration   //标记为Spring配置类
@ComponentScan("com.haojin.spring")  //设置扫描的包
public class SpringConfig {
    @Bean  //标记存放至IOC容器中的方法
    public DataSource getDataSource(){  //获取数据源对象的方法
        DruidDataSource druidDataSource = new DruidDataSource();
        //设置用于连接数据库的 用户 密码 url 驱动
        druidDataSource.setUrl("jdbc:mysql://localhost:3306/spring?characterEncoding=utf-8&useSSL=false");
        druidDataSource.setUsername("root");
        druidDataSource.setPassword("abc123");
        druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        return druidDataSource;
    }

    @Bean
    public JdbcTemplate getJdbcTemplate(DataSource dataSource){  //获取JdbcTemplate对象的方法
        JdbcTemplate jdbcTemplate = new JdbcTemplate();          //JdbcTemplate是spring封装的，实现jdbc相关操作类
        jdbcTemplate.setDataSource(dataSource);                  //设置数据源
        return jdbcTemplate;
    }

    @Bean
    public DataSourceTransactionManager getDataSourceTransactionManager(DataSource dataSource){ //获取事务管理器的方法
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); //获取DataSourceTransactionManager对象
        dataSourceTransactionManager.setDataSource(dataSource);               //为其设置数据源对象
        return dataSourceTransactionManager;
    }
}
